using System;
using System.Collections.Generic;
using System.Text;
using WCSFContrib.ECommerceCatalog.BusinessEntities;

namespace WCSFContrib.ECommerceCatalog.User
{
    public interface IUserController
    {
        void StartUserPageFlow();
        
        Cart GetCartByUserName(string userName);
        ICollection<Order> GetOrdersByUserName(string userName);
        Item GetProduct(int productId);
        void RemoveItemFromCart(string userName, int productId, int quantity);
        void OrderCheckout(string userName, DateTime orderDate, Address billingAddress, Address shippingAddress, Payment paymentMethod);
        void GoCheckoutPage();
        void GoUserProfilePage();
        void GoCartPage();
        string CurrentPage { get; set; }
        
        UserProfile GetUserProfile(string userName);
        void AddAddress(int userProfileId, Address address);
        void AddPaymentMethod(int userProfileId, Payment payment);
        void RemoveAddress(int userProfileId, int addressId);
        void RemovePaymentMethod(int userProfileId, int paymentId);
        void CreateUserProfile(string userName);
        void UpdateAddress(int userProfileId, Address address);
        void UpdatePayment(int userProfileId, Payment payment);
        Address GetAddresById(int addressId);
        Payment GetPaymentById(int paymentId);

        void ClearErrors();
    }
}
